1. Technical Field
This application relates to facilitating valid data entry.
2. Description of Related Art
Computer systems may include different resources used by one or more host processors. Resources and host processors in a computer system may be interconnected by one or more communication connections. These resources may include, for example, data storage devices such as those included in the data storage systems manufactured by EMC Corporation. These data storage systems may be coupled to one or more servers or host processors and provide storage services to each host processor. Multiple data storage systems from one or more different vendors may be connected and may provide common data storage for one or more host processors in a computer system.
A host processor may perform a variety of data processing tasks and operations using the data storage system. For example, a host processor may perform basic system I/O operations in connection with data requests, such as data read and write operations.
Host processor systems may store and retrieve data using a storage device containing a plurality of host interface units, disk drives, and disk interface units. The host systems access the storage device through a plurality of channels provided therewith. Host systems provide data and access control information through the channels to the storage device and the storage device provides data to the host systems also through the channels. The host systems do not address the disk drives of the storage device directly, but rather, access what appears to the host systems as a plurality of logical disk units. The logical disk units may or may not correspond to the actual disk drives. Allowing multiple host systems to access the single storage device unit allows the host systems to share data in the device. In order to facilitate sharing of the data on the device, additional software on the data storage systems may also be used.
Different tasks may be performed in connection with a data storage system. For example, a customer may perform data storage configuration tasks. Such tasks may include, for example, configuring storage for use with a particular software application. In connection with the configuration processing, tasks may include allocating storage, specifying the logical and/or physical devices used for the storage allocation, specifying whether the data should be replicated, the particular RAID (Redundant Array of Independent or Inexpensive Disks) level, and the like.
Distributed data processing systems involve data transfers between clients and servers (e.g., data storage systems) (also referred to as services). Typically, a client locates a server, initiates a session with a server and requests the server to perform some service (e.g., for configuring storage). The server expects requests from a client to arrive in a particular format. A server is more complex than a client because the server typically handles a large number of clients simultaneously, often fetches and stores information from a large database, creates additional transactions for others services, performs business logic, and returns information formatted according to each client channel.
For example, data will be specified in a particular message format. A particular transmission protocol will deliver the message to the server. The server accepts the message protocol as its application programming model (API) to its services and returns a result. A variety of software systems, such as Java, Adobe Flex, Enterprise Java Beans (EJB), Servlets, Java Server Pages (JSP), and XML have been implemented to enhance the development of client and server-side software.
Client applications perform a number of different functions. For example, the application on the client side handles the user interface and may provide program logic for processing user input. Additionally, a client application must match the requirements of a particular server to provide communications with the particular server. Clients are packaged and distributed according to the services provided by the server.
A graphical user interface (GUI) exists in the client application to handle what the user views on the screen. Events resulting from user input, such as mouse clicks or keyboard strokes, are detected and handled using “listener” processes in the application. The events are processed by program logic. The program logic may result in requests being sent to a server. Communication with the server is provided using processes that use protocols, such as hypertext transfer protocol (HTTP), secure sockets (SSL), or Remote Method Invocation (RMI).
Client software can be either “thick” or “thin”. A thick client is typically a large client-installed application that may access data storage and/or a database directly and apply business logic. Thick clients typically have dependence on the client operating system and require manual support to install and configure. By contrast a thin client is typically a small application downloaded on request from a server and accesses data storage or the database through an intermediate application server. This is known as a multi-tier application. A number of different usage scenarios for clients are present, resulting in a variety of client needs being present. For example, it is typical that in an global enterprise Intranet, the client configuration is controlled by the business but the large number of clients includes older machines with slow networks. Likewise, in the Internet, there is little configuration control by the business and it is estimated that a large percentage of clients worldwide still use low speed connections that result in very slow network speeds and downloads. A typical user will become very frustrated if downloads take longer than a minute or two. Further, mobile users require compact software that can be customized and packaged to fit on machines and operate disconnected from the network. Subsequent automated support to connect to the network is needed.
At the other end of the spectrum, power users with high speed connections expect screen refresh times in the sub-second range and “instantaneous” echoing of typed characters to provide the look and feel of processing in a local environment. In a multi-tier computing environment, the primary role of the client is to present and gather information quickly. The client application is considered a business asset independent of the network topology and server function. In these environments, it is desirable to be able to use the same client processing code for different user types and interface channels, such as automated teller machines (ATM), Kiosks, Internet [hypertext markup language (HTML)/applets], and regional office clients (applications).
Consequently, a common thin or thick client development environment for developing clients may be used to solve these problems, especially when the size and speed of the application download, integration and operation is important.
Object-oriented languages have been employed in creating thin clients. Object-oriented programming environments have been presented as providing software reuse, which is a desirable feature in creating thin clients and reducing development time.
Data management programs such as data storage configuration software typically include user interfaces that display a document and contain various fields for user input. Each user input field typically represents a different category of information, and the user typically enters one piece of information per field.
In such systems wherein data is solicited and input via an entry data entry form made up of multiple data entry fields, it is typical that when the data entry form is submitted for entry, each data entry field is validated against a predetermined criteria. This process is generally referred to as validating the data input. This validation process is often used to ensure that data is input in the proper format and within a reasonable range of expected values. For example, a data entry field which solicits a telephone number should not typically include letters. Thus, during the validation process, the criteria established for this data entry field which requires that all data input into the telephone number field be numeric will be checked. To assure validation consistency among all applications using a database for example, the validation criteria is typically defined by a set of validation rules. The validation rules are often included as a part of, and enforced by, a corresponding database application. If the criteria is not met, validation fails and requires correction of the entered data before it can be accepted and stored in the database. Typically, once the submitted data has failed to be validated, no further data entry fields on the submitted data entry form are reviewed regardless of whether or not the other data fields contain valid data which meets all predetermined criteria for validation. This failure in data validation results in the database application generating an exception indicating that the submitted data entry form contains data which does not meet the predefined criteria for validation. The data entry form is presented to a user again. The user can then make corrections to data entry fields as may be necessary and then resubmit the data entry form. Upon re-submission, the data entry fields of the data entry form are again reviewed (submitted for validation). Where multiple errors have been made in the entry of data in the data fields of the submitted form, the typical database system rejects the submitted data form by generating multiple exceptions and representing the data form to a user for correction until each and every invalid data field meets the predetermined criteria. This is a time consuming, resource consuming, iterative process. Typical database systems cause the user interface used to present the data entry form to a user, to iterate and be presented to the user for correction each time validation of data entry fails. This increases the time and resources required to validate all fields of data entered.
There are known various simple methods for applications to help validate data received. These are for example text filters or numeric filters, logical tests of the inputs, checking the lengths of the inputs and the like. Thus it may be prevented that, e.g., a user can enter a first name in a field intended for telephone numbers or enter the 32nd day of a month in a field intended for a date.
In at least some systems, a validation rule as referenced above is a logical sequence of operators and operands for performing one or more tests or comparisons on data in one or more fields to make sure the data is valid. The user interface may implement a particular form using a set of validation rules to ensure correct entry of data. The validation rules test the contents of each field entered by the user to ensure that the field is filled out correctly, either after the user enters data into the field, or after the form is transmitted back to the server.
In web-based systems involving data entry, checking the validity of the data may be done in at least three ways: 1. Check the data only at the client. This lets the system be responsive to the user (helpful messages can be displayed in a timely way), but may leave the system open to bad data from entities that bypass the client and speak directly to the server. 2. Check the data only at the server. This ensures that the server does not accept bad data, no matter what client is used to send it, but it may take a while to display messages to the user when data is incorrectly entered. 3. Check the data at the client and at the server. This is responsive to the user and is safe from bad data, but requires more engineering work because the data validation code is maintained on two platforms.
Data storage networks and other computer networks use rules governing the transmission and reception of data. These rules of the computer network are often referred to as a protocol. There are many different protocols that are being used today in combination with computer networks. One important protocol in use today is the Internet Protocol (IP). The Internet Protocol is the network layer protocol in the TCP/IP communications protocol suite.
A data session with a data storage system or other computer system may be initialized by sending a service request to a service provider, e.g., the data storage system, an application server, web server, or bank computer. The service request is addressed by an IP address known by the sender that identifies the service provider. Alternatively and more convenient for the sender, the request can be addressed to a host name given in plain language. Then, a Domain Name Server (DNS) is used to lookup for a corresponding IP address that identifies the service provider, respectively the host. For details about the DNS, reference is made to Fred Halsall, ‘Data Communications, Computer Networks and Open Systems’, Addison-Wesley, 4.sup.th edition 1997, pp. 758, 767, 816 820.
As defined in RFCs 1034 (“Domain Names—Concepts and Facilities”), 1035 (“Domain Names Implementation and Specification”) and 883 (Domain names—Implementation and Specification”), a network resource (e.g., host) is identified in the domain name space by a string containing 1 or more labels (each up to a maximum of 63 characters), separated by periods. The periods are intended to define and outline the hierarchical structure of domain name space. Although RFC 1034 permits the use of 8-bit binary encoding, it is suggested that applications use 7 bit ASCII for naming. Further, the suggested and currently implemented (de facto) naming scheme uses labels consisting only of alphanumeric characters from the Latin (ISO Latin 1) Character set plus the hyphen character. A valid name must start with a letter and the rest of the name should contain only letters, digits or hyphens.
Thus, the naming conventions for domains (and consequently sites and URLs) are rather restricted. Typically, there is an attempt to identify a particular site with a particular site owner, so that the address is meaningful. For example, IBM has a web site with the address “http://www.ibm.com” (“.com” indicates commercial), Microsoft has the address “http://www.microsoft.com” but Microsoft Network has the address of “http://www.msn.com”. The restrictions make it easy to create a one-to-one mapping between web addresses and a particular site. However, these addresses must be entered accurately. Any mistake will result in the site not being located.
The current Internet Protocol version is known as IPv4 (IP Version 4). Because of the rapid growth of the Internet the IPv4 address space will eventually be exhausted. The new version of Internet Protocol is known as IPv6 (IP Version 6). IPv6 aims to provide increased functionality for computer network communications.
The migration from IPv4 to IPv6 will not be an immediate process, but will take some period of time to accomplish. As a result, there will be a transition period where some systems are using IPv4 and some systems are using IPv6. Thus during the transition period, the IPv4 and IPv6 protocols need to coexist.
The IPv4 specification is disclosed in “INTERNET PROTOCOL; DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION”, Information Science Institute University of Southern California, September, 1981. The IPv6 specification is disclosed in S. Deering “INTERNET PROTOCOL: Version 6 (IPv6)”, Xerox, PARC, December 1981.
The notation of the IPv4 address is defined in accordance with the following rule:
1. the address is delimited every eight bits by a period (“.”) and values in respective eight bit areas are represented in decimal.
Example: 123.3.2.1
The notation of the IPv6 address is defined in accordance with the following rules:
1. the address is delimited every 16 bits by a colon (“:”) and values in respective 16-bit areas are represented in hexadecimal;
Example: 1234:5678:9abc:def0:0fed:cba9:8765:4321
2. when 16 bits in a delimited area are all zeros, this situation may be represented by “::”;
Example: 1234::9abc:def0:0fed:cba9:8765:4321
3. when 16 bits in successive delimited areas are all zeros, this situation may be represented by a single “::”;
Example: 1234::4321
4. when an IPv4 address is included in the lower 32 bits, the IPv4 address notation may be used for the lower 32 bits.
Example: ::ffff:133.144.95.22
Adobe Flex is a collection of technologies released by Adobe Systems for the development and deployment of cross platform rich Internet applications based on the Adobe Flash platform. Flex provides a workflow and programming model that is familiar to developers. Macromedia XML (“MXML”), an eXtensible Markup Language (“XML”)-based markup language, offers a way to build and lay out graphic user interfaces. Interactivity is achieved through the use of ActionScript, the core language of Flash Player that is based on the European Computer Manufacturers Association (“ECMA”) ECMAScript standard. A Flex software development kit (“SDK”) comes with a set of user interface components including buttons, list boxes, trees, data grids, several text controls, charts, graphs and various layout containers. Other features such as web services, drag and drop, modal dialogs, animation effects, application states, form validation, and other interactions round out the application framework.
A Flex application may be a rich internet application (“RIA”). RIAs introduce an intermediate layer of code, often called a client engine, between the user and the server. This client engine is typically downloaded as part of the instantiation of the application, and may be supplemented by further code downloads as use of the application progresses. The client engine acts as an extension of the browser, and usually takes over responsibility for rendering the application's user interface and for server communication. What can be done in a RIA may be limited by the capabilities of the system used on the client, but in general, the client engine is programmed to perform application functions that its designer believes will enhance some aspect of the user interface, or improve its responsiveness when handling certain user interactions, compared to a standard Web browser implementation. Also, while simply adding a client engine does not force an application to depart from the normal synchronous pattern of interactions between browser and server, in most RIAs the client engine performs additional asynchronous communications with servers.
In a multi-tiered model, Flex applications serve as the presentation tier. Unlike page-based Hypertext Markup Language (“HTML”) applications, Flex applications provide a stateful client where significant changes to the view don't require loading a new page. Similarly, Flex and Flash Player provide many useful ways to send and load data to and from server-side components without requiring the client to reload the view. To incorporate a Flex application into a website, one typically embeds Shockwave Flash (.SWF) file in an HTML, JavaServer Pages (“JSP”), Adobe, ColdFusion, or other type of web page. The page that embeds the SWF file is known as the wrapper. A wrapper consists of an <object> tag and an <embed> tag that format the SWF file on the page, define data object locations, and pass run-time variables to the SWF file. In addition, the wrapper can include support for history management and Flash Player version detection and deployment.